package com.linzm.leetcode.mid.tree.其他;

/**
 * @Author zimingl
 * @Date 2023/2/24 23:03
 * @Description: 给你一个二叉树的根节点 root ， 检查它是否轴对称。
 * 输入：p = [1,2], q = [1,null,2]
 * 输出：false
 * <p>
 * 两棵树上的节点数目都在范围 [0, 100] 内
 * -104 <= Node.val <= 104
 */
public class Demo8IsSymmetric100 {
    public static void main(String[] args) {

    }

    public boolean isSymmetric(TreeNode p, TreeNode q) {
        return dfs(p, q);
    }

    private boolean dfs(TreeNode left, TreeNode right) {
        //递归的终止条件是两个节点都为空
        //或者两个节点中有一个为空
        //或者两个节点的值不相等
        if (left == null && right == null) {
            return true;
        }
        if (left == null || right == null) {
            return false;
        }
        // 因为相同不一定所有的都相同
        if (left.val != right.val) {
            return false;
        }
        //再递归的比较 左节点的左孩子 和 右节点的右孩子
        //以及比较  左节点的右孩子 和 右节点的左孩子
        return dfs(left.left, right.left) && dfs(left.right, right.right);
    }
}
